Site cover image

Site icon imageSen(Qian)’s Memo

This website is Donglin Qian (Torin Sen)’s memo, especially about machine learning papers and competitive programming.

2022-DSAA-Positive-Unlabeled Domain Adaptation

https://ieeexplore.ieee.org/abstract/document/10032409

会議はIEEEのData Science and Advanced Analytics(DSAA)

Introduction

Domain Adaptationの中には、

  • Target Domainに一切ラベルがない状態で行うUnlabeled Domain Adaptation(UDA)
  • Target Domainに一部ラベルがついているSemi-Supervised Domain Adaptation(SSDA)

の両方がある。

この論文の貢献は以下の通り。

  • PU Learningに初めてDomain Adaptationを導入した。
  • 既存のDomain Adaptationの手法を調査した。
  • 2stepの学習手法を提案し、それでDomain Adaptationを含むPU Learningの問題設定を考えた。

Related Works

先行研究でPU LearningにおけるCovariance Shiftを考慮した研究はあるが、TrainとTestのDistribution Shiftのみを考えていた。種類はCovariance Shiftとか。

PU LearningのRelated Workは略。

Domain Adaptation

📄Arrow icon of a page link2021-Survey-A Comprehensive Survey on Transfer Learning (Part1) Instance Weighting Strategy ここら辺を見ると参考になるかも。

異なるドメインのデータを、共通の特徴空間にマッピングすることで、データが少ない分野などでも転用できるようにする。そのためには分布のマッチングが必要。

やり方としては直接マッピングさせたり、敵対的識別器を学習させたりとか。

提案手法

問題設定

  • ソースドメインはDSD_Sで、合計nSn_S個。
  • ターゲットドメインはDT=DTPDTUD_T = D_T^P \cup D_T^UとPUのデータである。それぞれnP,nUn_P, n_U個存在している。
  • nPn_Pと比べて、nU,nSn_U, n_Sは十分に大きい。
  • DS,DTD_S, D_Tは同じ特徴空間の上にマッピングすると当然違う分布になる。

手法としては2ステップのものを提案している。

Step1: Pseudo Target Labelの作成

Domain Alignment

流れとしては、まずデータx\mathbf{x}をどのドメインから来ているかを問わずにうまく特徴空間にマッピングするGGがあり、そこから識別器FFに入れて最終的に確率にcalibrationする。

Pr(x)=softmax(F(G(x)))Pr(\mathbf{x}) = softmax(F(G(\mathbf{x})))

この論文では、特徴空間の中で2つの分布を合わせるのは、以下の論文を用いている。

Wang, Jing, et al. "Discriminative feature alignment: Improving transferability of unsupervised domain adaptation by Gaussian-guided latent alignment." Pattern Recognition 116 (2021): 107943.
https://www.sciencedirect.com/science/article/pii/S0031320321001308
具体的には、Encoder, Decoderモデルを使う。

まず、zN(0,1)d\mathbf{z} \sim \mathcal{N}(0, 1)^dと基準となるベクトルをランダムに生成。

次に、以下のように、

  • Source DomainのデータはG(x)G(x)のEncoderによって得られた特徴はz\mathbf{z}の分布と似るようにする。
  • Target DomainのデータはD(G(x))D(G(x))とEncoder→Decoderを通して復元したものと、D(z)D(\mathbf{z})の分布が似るようにしたい。
LS=1nSxDSDKL(zG(x))LT=1nTxDSDKL(D(z)D(G(x)))L_S = \frac{1}{n_S} \sum_{\mathbf{x} \in D_S}D_{KL}(\mathbf{z}||G(\mathbf{x})) \\ L_T = \frac{1}{n_T} \sum_{\mathbf{x} \in D_S}D_{KL}(D(\mathbf{z})||D(G(\mathbf{x})))

ここでは、Source, Target両方は特徴空間の上では目標としては同じ表現z\mathbf{z}を獲得することを目指し、それがDomain Alignmentである

そのうえで、毎回の更新でパラメタの変化が大きく変わらないようにする。F(G(x))F(G(\mathbf{x}))が識別器であるが、このFFll層目の最後の出力の1つ前の内部表現をFl1(G(x))=h(x)F_{l-1}(G(\mathbf{x}))=h(\mathbf{x})とする。この内部表現を毎回の遷移で急激に変わってほしくないというインセンティブをつける

LSAFN=h(x;θP)h(x;θC)+δL_{SAFN} = || h(\mathbf{x};\theta_P) - h(\mathbf{x};\theta_C) + \delta||

δ\deltaはハイパラであり、θP,θC\theta_P, \theta_Cは1つ前と今のそれぞれのパラメタである。これにより、以下の効果がある。

  • 徐々に変わっていく。
  • Source, Targetのデータを混合して与えていく場合ならば、Source, Target間で識別器の適合が急激に変わらないようにすることで同じような表現を抽出しやすくする。

全体の損失のはこれの和である。

Lalign=LS+LT+LSAFNL_{align} = L_S + L_T + L_{SAFN}
Source DomainのClassification

ここまではDomainを合わせることだけを考えていたが、ここから先としては、ちゃんとGGから得た埋め込み表現は識別に使えるということが必要

これはクロスエントロピー損失で、Source Domainについてのデータで計算する。

\begin{equation*}{\mathcal{L}_{cls}} = \frac{1}{{{n_S}}}\sum\limits_{\left( {{x_i},{y_i}} \right) \in {\mathcal{D}_S}} {{y_i}\log \left( {p\left( {{x_i}} \right)} \right) + \left( {1 - {y_i}} \right)\log \left( {1 - p\left( {{x_i}} \right)} \right)} \end{equation*}
Target DomainのClassification

今回はTarget DomainがPUデータになっている。なので、Target DomainでPU Learningをしていい。📄Arrow icon of a page link2017-NIPS-[nnPU] Positive-Unlabeled Learning with Non-Negative Risk Estimator を使う。

ここでのPU Learningがうまくできるように、Source Domainの知識を転移させるのが目的ともいえるし、そのためにAlignなどをしてきた。

\begin{align*} & {\mathcal{L}_{PU}} = \frac{\pi }{{{n_P}}}\sum\limits_{x \in \mathcal{D}_T^P} {l(F(G(x)),1) + \max (0,} \\ & \left. {\frac{1}{{{n_U}}}\sum\limits_{x \in \mathcal{D}_T^U} {l(F(G(x)),0) - \frac{\pi }{{{n_P}}}} \sum\limits_{x \in \mathcal{D}_T^P} {l(F(G(x)),0)} } \right). \end{align*}
Step1の全体の損失の式

ハイパラのα,β\alpha, \betaを用いる。

L=LPU+αLcls+βLalignL = L_{PU} + \alpha L_{cls} + \beta L_{align}
信頼できるデータを選び出す

以上の損失関数を使って訓練を行い、ある程度のイテレーションごとにTarget DomainのUnlabeledの中の信頼できるデータに、識別器の予測結果のSoft Labelを付与して信頼できるというMulti-setに入れる

閾値としては、TposT_{pos}を超えるものとTnegT_{neg}以下のものを信頼できるとしてMulti-setに追加。

TnegT_{neg}はTarget DomainにNegativeデータが一切ないので、Source Domainから計算している。

Tpos=1nPxDTPp(x)Tneg=1nSNxDSNp(x)T_{pos} = \frac{1}{n_P} \sum_{x \in D_T^P} p(x) \\ T_{neg} = \frac{1}{n_S^N} \sum_{x \in D_S^N} p(x)

Multi-Setなのは、早期から信頼度が高いデータはあえて複数回カウントさせることで、Step2の訓練でより重きをなしてもらうため。

全体のアルゴリズムの流れ
Image in a image block

Step2: Obtaining the final Classifier

結局やりたかったのは、cost-sensitiveなども含んだPUの式から、信頼できるデータを選び出しそれで訓練を行うというSample Selectionの手法。

なので、Step1から得たしr内で切るMulti-setにあるデータを、重みに従って訓練して、クロスエントロピー損失で計算して終わり。

Experiments

Office-Home

Office-Homeのデータセットを使用。6ドメイン、65クラスを含むデータセット。視覚的に類似したクラスでPとNに分けて、それ以外は削除した

この手法は基本的に良いが、1-shotの学習ではうまくいかない(あまりにもデータが偏る場合1つだけというのはまずい)

やはりというべきか、PUは選んだデータにかなり依存するのでデータが少ないと厳しいものがある。

Office-Caltech

これがOffice31。今回はAmazonをTarget Domainとして、DSLR, WebcamをそれぞれSourceとしての学習を試みる。

ここでは、Computer MonitorとLaptopで分類する(視覚的なわかりやすさを重視しそれ以外のクラスを削除)。

この手法は十分に良い。また、PU特有の少数の選んだPデータに強く依存することはないらしい。どの写真もよくDomainを代表するものであるということ。

Digit Task

MNISTとUSPSという数字だが、Domain Shiftを持つデータの間の転送である。同様に、視覚的に類似している3と5の分類を考え、それ以外のクラスは削除している

Ablation Study

SAFN正則化が非常に重要である。次にPUの項である。